package com.itheima.ai.repository;

import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
public class InMemoryChatHistoryRepository implements ChatHistoryRepository{

    private final Map<String, List<String>> chatHistory = new HashMap<>();
    @Override
    public void save(String type, String chatId) {
//        if (!chatHistory.containsKey(type)){
//            chatHistory.put(type, new ArrayList<>());//第一次来创建 确保有list
//        }
//        List<String> charIds = chatHistory.get(type);
        /**
         * 如果指定类型的聊天记录不存在，则初始化一个空列表。
         * 该方法保证chatHistory映射表始终包含指定类型的键，避免后续空指针检查
         *
         * @param type 聊天记录分类键，表示要获取/初始化的聊天记录类型
         * @return 与指定类型关联的现有列表，或新创建的空白列表（如果是首次初始化）
         */
        List<String> charIds = chatHistory.computeIfAbsent(type, k -> new ArrayList<>());
        chatHistory.computeIfAbsent(type, k -> new ArrayList<>());//
        if (charIds.contains(chatId)){
            return;//存在直接结束
        }
        charIds.add(chatId);//不存在添加，因为长期前端可能生成一样的id，所以加if

    }

    @Override
    public List<String> getChatIds(String type) {
//        List<String> chatIds = chatHistory.get(type);
//        return chatIds == null?new ArrayList<>():chatIds;
        return chatHistory.getOrDefault(type, List.of());
    }
}
